<template>
  <!-- Vue3组件中的模板结构没有根标签 -->
  <h1>一个人的信息</h1>
  <h2 >姓名：{{person.name}}</h2>
  <h2>年龄:{{person.age}}</h2>
  <button @click="test1">测试触发一下Demo组建的Hello事件</button>
  <slot name="qwe"></slot>
</template>

<script>
  // import {h} from 'vue'
  import { reactive } from 'vue'
  export default {
    name: 'Demo',
    props: {
      mesg: String,
      school: String
    },
    emits: ['hello'],//注册自定义事件需要emits定义
    /* beforeCreate(){ setup运行在beforeCreate之前且this = undefined
      console.log('---beforCreate---');
    }, */
    setup(porps,context) {
      // console.log('---Setup---',porps,context);
      // console.log('---Setup---',context);
      //console.log('---Setup---',context.attrs);//相当于vue2中的$attrs
      //console.log('---Setup---',context.emit);//触发自定义事件的
      // console.log('---Setup---',context.slots);//插槽
      let person = reactive({//简称Proxy对象，基于ES6的Proxy实现，通过代理对象操作源对象的内部数据进行操作
        name:'张三',
        age:18,
      })
      function test1(){
        context.emit('hello','菜鸟斌');
      }
       //返回一个对象(常用)
      return {
        person,
        test1
      }
    }
  }
</script>

<style>
  #app {
    font-family: Avenir, Helvetica, Arial, sans-serif;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    text-align: center;
    color: #2c3e50;
    margin-top: 60px;
  }
</style>
